package Chapter8;
//182页程序8.15

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TwoListener implements MouseMotionListener, MouseListener {
    private JFrame frame;
    private JTextField tf; //展示并输入文本的区域 单行展示

    public static void main(String[] args) {

        TwoListener two = new TwoListener();
        two.go();
    }

    public void go() {
        frame = new JFrame("多个侦听器程序");
        Container contentPane = frame.getContentPane();
        contentPane.add(new TextField("单击并拖动鼠标"), BorderLayout.NORTH);

        tf = new JTextField(30); //宽度30，展示并输入文本的区域 单行展示
        contentPane.add(tf, BorderLayout.SOUTH); //放到下部
        tf.setEditable(false); //文本区域变得不可更改

        frame.addMouseMotionListener(this); //该监听程序有鼠标拖放和鼠标移动两个抽象方法
        frame.addMouseListener(this); //此监听程序包含鼠标键按下，释放，进入，离开，单击的事件
        frame.setSize(300, 300); //设置框架大小
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    //以下为MouseMotionListener接口的抽象方法
    public void mouseDragged(MouseEvent e) { //鼠标拖放时进行的操作
        String s = "鼠标拖动 X=" + e.getX() + "Y=" + e.getY();
        tf.setText(s);
    }

    public void mouseMoved(MouseEvent e) { //鼠标移动时进行的操作
    }

    //以下为MouseListener接口的抽象方法
    public void mouseClicked(MouseEvent e) { //单击鼠标时进行的操作
    }

    public void mouseEntered(MouseEvent e) { //鼠标进入时进行的操作
        String s = "鼠标输入";
        tf.setText(s);
    }

    public void mouseExited(MouseEvent e) { //鼠标离开时进行的操作
        String s = "鼠标离开区域";
        tf.setText(s);
    }

    public void mousePressed(MouseEvent e) { //鼠标键按下时进行的操作
    }

    public void mouseReleased(MouseEvent e) { //鼠标键释放时进行的操作
    }

}